#ifndef __SCHED_RSDL__
#define __SCHED_RSDL__

#include <vector>
#include <queue>
#include "basesched.h"

class SchedRSDL : public SchedBase {
	public:
		SchedRSDL(std::vector<int> argn);
        ~SchedRSDL();
		virtual void load(int pid);
		virtual void unblock(int pid);
		virtual int tick(int cpu, const enum Motivo m);

	private:
//prio 0 =  más alta.
		std::vector< std::queue<int> > activo;
		std::vector< std::queue<int> > expirado;
   		std::vector<int> qprioridades; //guarda los quantum de cada prioridad, qprioridades[prio] = quantum.
       		int quantumtarea;//quantum actual de la tarea.
		int quantum; //quantum asignado para round-robin.
		int cantprioridades;
		int prioaasignar;//???
		int prioactual; //prioridad en la que estoy ejecutando actualmente.
		int qcola;//quantum actual de la cola.
		std::vector< int > prioridadportareas; //dado un pid, se devuelve su prioridad.

       		bool activovacio();
        	bool expiradovacio();
		void buscoSiguientePrio();
        	void limpiarexpirado();
     		void majorRotation();
		
};
#endif
